home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 46 / Amiga Format CD46 (1999-10-20)(Future Publishing)(GB)[!][issue 1999-12].iso / -in_the_mag- / reader_requests / scilab / demos / icse / icsuq.sci < prev    next >
Text File  |  1999-09-16  |  2KB  |  51 lines

  1. //[co,u,g,itv,dtv,cof]=icsuq(u,simu,nap,imp,obs,ytob)
  2. //  Calcul du controle optimal avec ponderation du controle initial
  3. //  et ponderation geometrique des poids des observations.
  4. //  Une mise a l'echelle ramene toutes les composantes du controle
  5. //  initial a 1.Les composantes initialement nulles le resteront.
  6. //  Ne convient que si la borne inferieure est positive.
  7. //  Formule de ponderation des poids : 
  8. //  cof(i,j)=1/2*[(ytob(i,j)-ob(1,j,i))**2+..+(ytob(i,j)-ob(nex,j,i)**2]
  9. //
  10. //%Syntaxe
  11. //[co,u,g,itv,dtv,cof]=icsuq(u,nap,imp,obs,ytob)
  12. //variables d'entree :
  13. //u(nu)         : parametres initiaux
  14. //simu      : chaine de caracteres donnant le nom du sous programme
  15. //            decrivant le probleme (second menbre, critere et etat
  16. //            initial)
  17. //nap           : nombre maximum d' appels du simulateur
  18. //imp       : valeur de debug pendant l'optimisation
  19. //obs(nob,ny)   : matrice d'observation
  20. //ytob(ny,ntob) : valeurs initiales de l'etat aux instants de
  21. //mesure obtenues par icob apres la mise en
  22. //oeuvre de icse,icsu,icsua ou icsuq
  23. //variables de sortie :
  24. //co            : cout final
  25. //u(nu)         : parametres finaux
  26. //g(nu)         : gradient final
  27. //itv(nitv)     : tableau de travail (entiers fortran)
  28. //dtv(ndtv)     : tableau de travail (double precision fortran)
  29. //cof(nob,ntob) : coefficients de ponderation du cout
  30. //Utiliser les macros icot et icob pour extraire l'etat
  31. //!
  32. df0=1;
  33. if mini(binf) <=0, ..
  34.   error('appel de icsuq avec binf non strictement positif'); end;
  35. for i=1 : nu, u(1,i)=maxi([ binf(1,i),mini([u(1,i),bsup(1,i)])] ), end;
  36. ech=u;
  37. binf=binf./u;
  38. bsup=bsup./u;
  39. u=ones(1,nu);
  40. ico=2;
  41. yob=obs*ytob;
  42. ob=don;
  43.  
  44. [cof]=fort('icscof',ico,1,'i',ntob,2,'i',nex,3,'i',...
  45.             nob,4,'i',yob,5,'d',ob,6,'d','sort',[1,nob*ntob],7,'d');
  46. [co,u,g,itv,dtv]=icsegen(u,simu,nap,imp)
  47. u=ech.*u
  48. //end
  49.  
  50.  
  51.